/*
 * @description:
 * @Author: lal
 * @Date: 2021-07-15 07:03:43
 * @LastEditors: lal
 * @LastEditTime: 2021-07-15 07:06:00
 */
/*
 * @lc app=leetcode.cn id=700 lang=javascript
 *
 * [700] 二叉搜索树中的搜索
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} val
 * @return {TreeNode}
 */
var searchBST = function (root, val) {
  // 二叉搜索树中的搜索
  // 创建while循环
  while (root) {
    if (root.val === val) return root
    root = root.val > val ? root.left : root.right
  }
  return null
}
// @lc code=end
// 递归
// var searchBST = function(root, val) {
//     if(root == null) return root
//     if(root.val == val) return root
//     return root.val < val ? searchBST(root.right, val) : searchBST(root.left, val)
// };

// 继续思考题目"Remove Duplicates":

// 如果数组中元素最多允许重复两次呢？
// 例如：
// 给出有序数组 A =[1,1,1,2,2,3],
// 你给出的函数应该返回length =5,  A 变为[1,1,2,2,3].
